package q376_wiggleMaxLength;

public class Solution {
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.wiggleMaxLength(new int[]{1,17,5,10,13,15,10,5,16,8}));
    }
    public int wiggleMaxLength(int[] nums) {
//        if (nums.length == 1){
//            return 1;
//        }
//        int res = 1;
//
//        for (int i = 1; i < nums.length - 1; i++) {
//            if(((nums[i + 1] - nums[i] > 0)&&(nums[i - 1] - nums[i] > 0))||((nums[i + 1] - nums[i] < 0)&&(nums[i - 1] - nums[i] < 0))){
//                res++;
//            }
//        }
//        return res;

        // 如上面的解法 这道题的核心就在于寻找坡峰 因为坡面上的元素我们并不关心
        // 所以实际上也是一种贪心算法
        if (nums.length == 1){
            return 1;
        }
        int curDiff = 0, preDiff = 0;// 分别定义当前数与后一个数的差 以及pre就代表上一个数与当前数的差
        int res = 1;
        for (int i = 0; i < nums.length - 1; i++) {
            curDiff = nums[i + 1] - nums[i];
            // 出现峰值
            if ((curDiff > 0 && preDiff <= 0) || (preDiff >= 0 && curDiff < 0)) {
                res++;
                preDiff = curDiff;
            }

        }
        return res;
    }
}
